package cn.lingyangwl.agile.model.module.config.param;

import cn.lingyangwl.agile.model.enums.ConfigKeyEnum;
import cn.lingyangwl.framework.data.mate.annotations.FieldSensitive;
import cn.lingyangwl.framework.data.mate.fieldsensitive.enums.StrategyType;
import com.alibaba.fastjson2.JSON;
import lombok.Getter;
import lombok.Setter;
import org.springframework.stereotype.Component;

import javax.validation.constraints.NotEmpty;

/**
 * 企业微信配置参数
 * @author shenguangyang
 */
@Getter
@Setter
@Component
public class WxCpParam extends BaseConfigParam<WxCpParam> {
    /**
     * 企业微信应用名称
     */
    private String name;

    /**
     * 填写带https:// 头的有效URL链接，填写URL时需要正确响应企业微信验证URL的请求,
     * 用于接收托管企业微信应用的用户消息、进入应用事件、通讯录变更事件
     */
    @NotEmpty(message = "消息推送地址不能为空")
    private String msgPushUrl;

    /**
     * 设置企业微信的 corpId
     */
    @NotEmpty(message = "企业微信 corpId 不能为空")
    private String corpId;

    /**
     * 设置企业微信应用的AgentId
     */
    @NotEmpty(message = "业微信应用的 AgentId 不能为空")
    private String agentId;

    /**
     * 设置企业微信应用的Secret
     */
    @NotEmpty(message = "业微信应用的密钥不能为空")
    @FieldSensitive(strategy = StrategyType.RESERVE_4)
    private String secret;

    /**
     * 设置企业微信应用的token
     */
    @NotEmpty(message = "业微信应用的token不能为空")
    @FieldSensitive(strategy = StrategyType.RESERVE_4)
    private String token;

    /**
     * 设置企业微信应用的EncodingAESKey
     */
    @FieldSensitive(strategy = StrategyType.RESERVE_4)
    @NotEmpty(message = "业微信应用aes密钥不能为空")
    private String aesKey;

    @Override
    protected WxCpParam jsonToObject(String json) {
        return JSON.parseObject(json, WxCpParam.class);
    }

    @Override
    public ConfigKeyEnum configKey() {
        return ConfigKeyEnum.WX_CP;
    }


}
